package com.nju.mini_tiktok.utils;

import android.app.Activity;
import android.content.Context;

import android.graphics.Point;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;

import androidx.annotation.NonNull;


@SuppressWarnings("deprecation")
public class Utility {
    private final static String DEBUG_TAG = "Utility";

    // 获得屏幕高宽
    @NonNull
    public static Point getScreenPoint(@NonNull Activity activity) {
        WindowManager windowManager = activity.getWindowManager();
        Display display = windowManager.getDefaultDisplay();
        @SuppressWarnings("deprecation")
        Point point = new Point(display.getWidth(), display.getHeight());
        return point;
    }

    public static int getsW(@NonNull Activity a) {
        return getScreenPoint(a).x;
    }

    public static int getsH(@NonNull Activity a) {
        return getScreenPoint(a).y;
    }

    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
     */
    public static int dp2px(@NonNull Context context, float dpValue) {
        final DisplayMetrics dm = context.getResources().getDisplayMetrics();
        final float scale = dm.density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
     */
    public static int px2dp(@NonNull Context context, float pxValue) {
        final DisplayMetrics dm = context.getResources().getDisplayMetrics();
        final float scale = dm.density;
        return (int) (pxValue / scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 sp 的单位 转成为 px(像素)
     */
    public static int sp2px(@NonNull Context context, float spValue) {
        final DisplayMetrics dm = context.getResources().getDisplayMetrics();
        final float scale = dm.scaledDensity;
        return (int) (spValue * scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 sp
     */
    public static int px2sp(@NonNull Context context, float pxValue) {
        final DisplayMetrics dm = context.getResources().getDisplayMetrics();
        final float scale = dm.scaledDensity;
        return (int) (pxValue / scale + 0.5f);
    }
}
